Trong Elixir, chúng ta từ bỏ mô hình mệnh lệnh thay đổi trạng thái để chuyển sang cách tiếp cận dựa trên luồng, nơi các chương trình là những biến đổi riêng biệt, những biến đổi thuần khiết. Thay vì nói với máy tính làm thế nào thay đổi một giá trị, chúng ta xác định một chuỗi các hàm nơi mà Lập trình nên tập trung vào việc biến đổi dữ liệu.
1. Nguyên tắc bất biến
Trong Elixir, tất cả các giá trị đều bất biến. Một khi dữ liệu được tạo ra, nó không thể bị thay đổi. Điều này đảm bảo rằng Dữ liệu bất biến là dữ liệu đã biết—thông tin sẽ không bao giờ thay đổi một cách bất ngờ, loại bỏ hàng loạt lỗi liên quan đến trạng thái. Quá trình biến đổi này không bao giờ thay đổi dữ liệu; thay vào đó, mỗi hàm tạo ra một phiên bản mới, nguyên vẹn của dữ liệu.
2. Triết lý ống dẫn (Pipe)
Toán tử ống dẫn (|>) xử lý dữ liệu như một chất lỏng di chuyển qua dây chuyền sản xuất. Một ngôn ngữ lập trình chức năng giúp chúng ta suy nghĩ theo cách các hàm biến đổi dữ liệu từng bước một.
3. Bối cảnh người hành động (Actor)
Trong VM Erlang (BEAM), mã chạy trong các tiến trình đồng thời nhỏ bé, mỗi tiến trình có trạng thái riêng của nó. Các tiến trình giao tiếp với nhau thông qua tin nhắn. Vì giao tiếp diễn ra bằng cách truyền tin nhắn, việc trao đổi dữ liệu giữa các máy khác nhau trên mạng được VM xử lý một cách minh bạch.